package com.gwt.mvp.ui.showcase.client.main; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.Widget; import com.gwt.ui.client.ULPanel; import com.gwt.ui.client.button.DockButton; /** * @author ibouakl */ public class MenuDisplay implements MenuPresenter.MenuPresenterDisplay { private FlowPanel menuPanel; private FlowPanel headerPanel; private FlowPanel dockPanel; private DockButton content; private FlowPanel logoArea; private DockButton dashborad; private DockButton widgets; private InlineLabel inlineLabel; private DockButton currentDockButton; public void init() { menuPanel = new FlowPanel(); initHeader(); initDock(); } private void initHeader() { headerPanel = new FlowPanel(); menuPanel.add(headerPanel); headerPanel.addStyleName("header"); headerPanel.addStyleName("container_16"); logoArea = new FlowPanel(); headerPanel.add(logoArea); logoArea.addStyleName("logo"); logoArea.addStyleName("grid_8"); inlineLabel = new InlineLabel("MVP && widgets showcase"); logoArea.add(inlineLabel); FlowPanel wrap = new FlowPanel(); headerPanel.add(wrap); wrap.addStyleName("grid_8"); } private Widget createItemsNavigation() { ULPanel listItem = new ULPanel(); listItem.addStyleName("group"); // Dashboard button dashborad = new DockButton("Dashboard", "outer", "inner dashboard"); currentDockButton = dashborad; dashborad.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (currentDockButton != null) currentDockButton.changeParentSpanStyleName("outer"); dashborad.changeParentSpanStyleName("outerClicked"); currentDockButton = dashborad; } }); listItem.addItem(dashborad, "item first"); // Content button content = new DockButton("Contents", "outerClicked", "inner content"); content.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (currentDockButton != null) currentDockButton.changeParentSpanStyleName("outer"); content.changeParentSpanStyleName("outerClicked"); currentDockButton = content; } }); listItem.addItem(content, "item middle"); // Settings button widgets = new DockButton("Parameters", "outer", "inner settings"); widgets.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (currentDockButton != null) currentDockButton.changeParentSpanStyleName("outer"); widgets.changeParentSpanStyleName("outerClicked"); currentDockButton = widgets; } }); listItem.addItem(widgets, "item middle"); return listItem; } private void initDock() { dockPanel = new FlowPanel(); dockPanel.addStyleName("dock"); FlowPanel wrapDock = new FlowPanel(); wrapDock.addStyleName("menu"); wrapDock.add(createItemsNavigation()); dockPanel.add(wrapDock); menuPanel.add(dockPanel); } public void dispose() { menuPanel.removeFromParent(); menuPanel = null; dashborad = null; content = null; widgets = null; inlineLabel = null; } public Widget asWidget() { return menuPanel; } @Override public void addContentClickHandler(ClickHandler clickHandler) { content.addClickHandler(clickHandler); } @Override public void addDashboardClickHandler(ClickHandler clickHandler) { dashborad.addClickHandler(clickHandler); } }